package com.learn.micro_mall.repository.goods;

import com.learn.micro_mall.dao.skuParam.SkuParamMapper;
import com.learn.micro_mall.dao.skuParam.model.SkuParam;
import com.learn.micro_mall.domain.entity.goods.GoodsSkuParamEntity;
import com.learn.micro_mall.domain.vo.goods.GoodsSkuParamId;
import com.learn.micro_mall.repository.convertor.goods.SkuParamConvert;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

@Repository
public class GoodsSkuParamRepository {


    @Resource
    private SkuParamMapper skuParamMapper;
    /**
     * 获取商品sku参数值
     * @param goodsSkuParamId
     * @return
     */
    public GoodsSkuParamEntity getByGoodsSkuParamId(GoodsSkuParamId goodsSkuParamId){
        SkuParam skuParam = skuParamMapper.getBySkuParamKey(goodsSkuParamId.getSkuParamKey());
        GoodsSkuParamEntity skuParamEntity = SkuParamConvert.INSTANCES.toSkuParamEntity(skuParam);
        return skuParamEntity;
    }

    /**
     * 新增商品规格参数
     * @param goodsSkuParamEntity
     */
    public void insert(GoodsSkuParamEntity goodsSkuParamEntity) {
        SkuParam skuParam = SkuParamConvert.INSTANCES.toSkuParam(goodsSkuParamEntity);
        skuParamMapper.insert(skuParam);
    }

    public void update(GoodsSkuParamEntity goodsSkuParamEntity) {

    }

    public void delete(String skuParamKey, String skuParamValue) throws Exception {
        // 这里有个问题,如果在删除时出现新增,这个问题如何解决
        SkuParam skuParam = skuParamMapper.getBySkuParamKeyAndSkuParamValue(skuParamKey, skuParamValue);
        if(skuParam.getRelatedGoodsNum() != 0){
            throw new Exception("不能删除该规格参数,有商品关联该规格");
        }
        skuParamMapper.delete(skuParamKey, skuParamValue);
    }

    public List<SkuParam> listByGoodsSkuParamId(String skuParamKey) {
        return skuParamMapper.listBySkuParamKey(skuParamKey);
    }

    public void delete(String skuParamKey) {
        skuParamMapper.deleteSkuParam(skuParamKey);
    }
}
